// import 'dart:math';
import 'dart:io';

import 'package:uverify/uverify.dart';
import '../public.dart';

Map<String, dynamic> uiconfig = {
  'setNavHidden': true,
  'setWebNavColor': '#000000',
  'setStatusBarUIFlag': 0x00000400,
  'setStatusBarColor': '#000000',
  'setStatusBarHidden': true,
  'setNumberColor': '#ffffff',
  'setNumberSize': 28,
  'setNumFieldOffsetY': 0,
  'setSloganHidden': true,
  'setLogBtnText': '萌新登录送积分红包',
  'setLogBtnTextColor': '#333333',
  'setLogBtnTextSize': 18,
  'setLogBtnHeight': 48,
  'setLogBtnOffsetY': 0,
  'setLogBtnMarginLeftAndRight': 16,
  'setLogBtnBackgroundPath': 'login_btn',
  'setSwitchAccHidden': true,
  'setAppPrivacyOne': '',
  'setAppPrivacyTwo': '',
  'setVendorPrivacyPrefix': '《',
  'setVendorPrivacySuffix': '》',
  'setAppPrivacyColor': '#ffffff,#6491d9',
  'setPrivacyMargin': 56,
  'setProtocolGravity': 'LEFT',
  'setPrivacyOffsetY': 0,
  'setCheckboxHidden': false,
  'setCheckBoxWidth': 12,
  'setCheckBoxHeight': 12,
  'setCheckedImgPath': '@mipmap/select16',
  'setUncheckedImgPath': 'select',
  'setPageBackgroundPath': 'login_background'
};

/// 我的页面
class LoginPage {
  BuildContext context;
  Size size;
  LoginPage(this.context, {this.size});
  UserProvider user;
  UserRecordProvider userRecord;

  init() {
    if (Platform.isAndroid) {
      return _initUverify();
    } else {
      Routers.navigateTo(RouterPage.REGISTER_PAGE);
    }
  }

  Future<void> _initUverify() async {
    Uverify.init(
        appKey: AppConfig.umengAppKey, appSecret: AppConfig.umengAppSecret);

    // 自定义点击事件监听
    Uverify.customClickEventListener((res) {
      print('customClickEventListener==2=>:${res.toString()}');
      switch (res) {
        case 'otherLogin':
          {
            Uverify.quitLoginPage();
            Routers.navigateTo(RouterPage.REGISTER_PAGE);
          }
          break;
      }
    });

    // 监听sdk token事件
    Uverify.sdkTokenEventListener((res) async {
      if (res.status == 600000) {
        await login(
            {'type': 'mobile_token', 'sub_type': 'umeng', 'token': res.data},
            false);

        // 关闭登录窗口和加载loading
        Uverify.hideLoginLoading();
        Uverify.quitLoginPage();
        Routers.navigateTo(RouterPage.MY_INDEX, replace: true);
      } else {
         Routers.navigateTo(RouterPage.REGISTER_PAGE);
      }
    });

    // 监听sdk事件绑定
    Uverify.sdkClickEventListener((res) {
      print('sdkClickEventListener==2=>:${res.toString()}');
    });

    // 获取设备id
    Uverify.getVerifyId().then((value) {
      print('getVerifyId===>$value');
    });

    Uverify.preLogin().then((res) {
      int code = res['code'];
      if (code == 600000 || code == 600001) {
        _addAuthRegistViewConfig(res['data']);
      } else {
        Routers.navigateTo(RouterPage.REGISTER_PAGE);
      }
    });
  }

  void _addAuthRegistViewConfig(String carrierName) {
    int logoBgY = (size.width * (8 / 15)).toInt();
    int slogoOffsetY = logoBgY - 30;
    uiconfig['setNumFieldOffsetY'] = logoBgY - 70;
    uiconfig['setSloganOffsetY'] = slogoOffsetY;
    uiconfig['setLogBtnOffsetY'] = slogoOffsetY + 48;
    uiconfig['setPrivacyOffsetY'] = slogoOffsetY + 228;
    uiconfig['setAppPrivacyOne'] = '《用户协议》, ${ACGN.config.userAgreement}';
    uiconfig['setAppPrivacyTwo'] = '《隐私政策》, ${ACGN.config.ysxy}';
    // double averageW = size.width / 3;
    Uverify.addAuthRegistViewConfig({
      'uiconfig': uiconfig,
      'widgets': [
        {
          'type': 'RelativeLayout',
          'height': 32,
          'width': 32,
          'top': slogoOffsetY + 32,
          'right': 32,
          'backgroundResource': 'login_hbzs_32',
          'layoutGravity': 'RIGHT'
        },
        {
          'widgetId': 'otherLogin',
          'type': 'button',
          'text': '其他手机号登录',
          'color': '#66ffffff',
          'fontSize': 18,
          'height': 48,
          'width': -1,
          'left': 16,
          'right': 16,
          'top': slogoOffsetY + 112,
          'backgroundResource': 'login_btn2',
        },
        {
          'type': 'textView',
          'text': '登录即享全场漫画免费看，边看边赚钱',
          'color': '#16ffffff',
          'fontSize': 14,
          'top': slogoOffsetY + 176,
          'layoutGravity': 'CENTER_HORIZONTAL',
        },
        {
          'type': 'textView',
          'text': _getCarrierName(carrierName),
          'color': '#ffffff',
          'fontSize': 10,
          'height': 16,
          'width': 70,
          'top': slogoOffsetY,
          'layoutGravity': 'CENTER_HORIZONTAL',
          'backgroundResource': 'login_radius'
        },
        // {
        //   'widgetId': 'QQ',
        //   'type': 'button',
        //   'height': 44,
        //   'width': 44,
        //   'left': (averageW - 44) ~/ 2 + 32,
        //   'top': max(480, (size.height - 144).toInt()),
        //   'backgroundResource': '@mipmap/qq44',
        // },
        // {
        //   'widgetId': 'weixin',
        //   'type': 'button',
        //   'height': 44,
        //   'width': 44,
        //   'top': max(480, (size.height - 144).toInt()),
        //   'layoutGravity': 'CENTER_HORIZONTAL',
        //   'backgroundResource': '@mipmap/weixin44',
        // },
        // {
        //   'widgetId': 'weibo',
        //   'type': 'button',
        //   'height': 44,
        //   'width': 44,
        //   'left': ((averageW - 44) / 2 + averageW * 2 - 32).toInt(),
        //   'top': max(480, (size.height - 144).toInt()),
        //   'backgroundResource': '@mipmap/weibo44',
        // }
      ]
    });
  }

  String _getCarrierName(code) {
    switch (code) {
      case 'CTCC':
        return '中国电信认证';
      case 'CUCC':
        return '中国联通认证';
      case 'CMCC':
        return '中国移动认证';
      default:
        return '未知认证';
    }
  }

  Future login(Map<String, dynamic> params, [isAutoLogin = true]) async {
    user = Provider.of<UserProvider>(context, listen: false);
    UserModel userInfo = user?.data;
    if (userInfo == null || !isAutoLogin) {
      // 1、获取用户token
      UserTokenModel userToken = await UserService.getUserToken(params);

      // 2、如果不存在token则没有注册，则需要注册
      String accessToken = userToken.token;
      if (accessToken == null) {
        Map<String, dynamic> verifyParams;
        switch (params['type']) {
          case 'mobile_token':
            verifyParams = {'type': 'mobile_token', 'openid': userToken.openid};
            break;
          default:
            verifyParams = {
              'type': 'device',
              'device': CryptoUtil.aesEncrypt(params['device']),
              'openid': userToken.openid
            };
        }
        accessToken = await UserService.verifyinvite(verifyParams);
      }

      // 3、通过token获取到用户信息
      userInfo = await UserService.getUserInfoByToken(accessToken);
      // 设置用户信息
      user.setUserInfo();
    }

    // 设置用户记录
    userRecord = Provider.of<UserRecordProvider>(context, listen: false);
    userRecord.setUserRecord();
    LogUtil.v(userInfo, tag: 'userInfo==>');
    return userInfo;
  }
}
